1 module unde.games.dizzy.omega.animations.bucket; 2 3 import derelict.opengl3.gl; 4 import unde.games.object; 5 import unde.games.renderer; 6 import unde.global_state; 7 8 class Bucket:StaticGameObject 9 { 10 this(MainGameObject root) 11 { 12 frame = -1; 13 models["bucket-of-water"] = root.models["bucket-of-water"]; 14 models["bucket-out-water"] = root.models["bucket-out-water"]; 15 models["bucket"] = root.models["bucket"]; 16 super(root); 17 } 18 19 void start_anim(float[3] coords) 20 { 21 x = coords[0]; 22 y = coords[1]; 23 z = coords[2]; 24 frame = root.frame; 25 } 26 27 override void draw(GlobalState gs) 28 { 29 float f = 0.0; 30 if (frame >= 0) f = root.frame - frame; 31 32 glPushMatrix(); 33 if (f <= 0.0) {} 34 else if (f <= 50.0) 35 { 36 glTranslatef(x-2.0*f/50.0, y-0.5*f/50.0, z-2.0*f/50.0); 37 38 glTranslatef(0.0, 1.0, 0.0); 39 glRotatef(90.0*f/50.0, -1.0, 0.0, 0.0); 40 glTranslatef(0.0, -1.0, 0.0); 41 42 recursive_render(gs, models["bucket-of-water"]); 43 } 44 else if (f <= 100.0) 45 { 46 glTranslatef(x-2.0, y-0.5, z-2.0); 47 48 glTranslatef(0.0, 1.0, 0.0); 49 glRotatef(90.0, -1.0, 0.0, 0.0); 50 glTranslatef(0.0, -1.0, 0.0); 51 52 recursive_render(gs, models["bucket-out-water"]); 53 } 54 else if (f <= 200.0) 55 { 56 glTranslatef(x-2.0, y-0.5, z-2.0); 57 58 glTranslatef(0.0, 1.0, 0.0); 59 glRotatef(90.0, -1.0, 0.0, 0.0); 60 glTranslatef(0.0, -1.0, 0.0); 61 62 recursive_render(gs, models["bucket"]); 63 } 64 65 else {} 66 glPopMatrix(); 67 } 68 69 override bool tick(GlobalState gs) 70 { 71 return true; 72 } 73 } 74